﻿using System;
namespace DiscMaster.Web.Models
{
    public interface IDiscMasterRepository
    {
        void AddClub(Club club);
        void AddClubMember(Club club, Player player);
        void AddCourse(Course course);
        void AddCourseLayout(CourseLayout courselayout);
        void AddMatch(Match match);
        void AddPlayer(Player player);
        void DeleteClub(Club club);
        void DeleteCourse(Course course);
        void DeleteCourseLayout(CourseLayout courselayout);
        void DeleteMatch(Match match);
        void DeletePlayer(Player player);
        System.Linq.IQueryable<Club> FindAllClubs();
        System.Linq.IQueryable<CourseLayout> FindAllCourseLayouts();
        System.Linq.IQueryable<Course> FindAllCourses();
        System.Linq.IQueryable<Friend> FindAllFriends(Guid id);
        System.Linq.IQueryable<Hole> FindAllHoles();
        System.Linq.IQueryable<Match> FindAllMatches(string id);
        System.Linq.IQueryable<Match> FindAllMatches(Guid id);
        System.Linq.IQueryable<Match> FindAllMatches();
        System.Linq.IQueryable<MatchResult> FindAllMatchResults();
        System.Linq.IQueryable<MatchResult> FindAllMatchResultsByPlayer(Player player);
        System.Linq.IQueryable<Player> FindAllPlayers();
        System.Linq.IQueryable<Match> FindPastMatches();
        System.Linq.IQueryable<Match> FindUpcomingMatches();
        Club GetClub(string id);
        Club GetClub(Guid id);
        Club GetClubByName(string name);
        Course GetCourse(string id);
        Course GetCourse(Guid id);
        Course GetCourseByName(string name);
        CourseLayout GetCourseLayout(Guid id);
        CourseLayout GetCourseLayout(string id);
        CourseLayout GetCourseLayoutByName(string name);
        Forecast GetForecast(string courseid, int forecastindex);
        Forecast GetForecast(Guid courseid, int forecastindex);
        System.Collections.Generic.List<Forecast> GetForecasts(string courseid);
        Player GetLoggedOnPlayer();
        Match GetMatch(Guid id);
        Match GetMatch(string id);
        Player GetPlayer(string id);
        Player GetPlayer(Guid id);
        Player GetPlayerByName(string name);
        void RemoveClubMember(Club club, Player player);
        void Save();
        void UpdateClubMemberStatus(Club club, Player player, bool status);
    }
}
